package br.com.lp3.livraria.model;

import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;

@Entity
public class Funcionario extends Usuario{
	
	@Column
	private String cpf;
	
	@Column
	private String rg;
	
	@Column
	private String nome;
	
	@Column
	private String numeroCarteira;
	
	@OneToMany(mappedBy="funcionario", targetEntity=Endereco.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
	private List<Endereco> enderecos;
	
	@OneToMany(mappedBy="funcionario", targetEntity=Telefone.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)  
	private List<Telefone> telefones;

	@OneToMany(mappedBy="funcionario", cascade = CascadeType.ALL, targetEntity=Email.class, fetch = FetchType.LAZY)  
	private List<Email> emails;
	
	@OneToMany(mappedBy="funcionario", cascade = CascadeType.ALL, targetEntity=Email.class, fetch = FetchType.LAZY)  
	private List<Venda> vendas;
	
	
	public Funcionario() {
		
	}


	public String getCpf() {
		return cpf;
	}


	public void setCpf(String cpf) {
		this.cpf = cpf;
	}


	public String getRg() {
		return rg;
	}


	public void setRg(String rg) {
		this.rg = rg;
	}


	public String getNome() {
		return nome;
	}


	public void setNome(String nome) {
		this.nome = nome;
	}


	public String getNumeroCarteira() {
		return numeroCarteira;
	}


	public void setNumeroCarteira(String numeroCarteira) {
		this.numeroCarteira = numeroCarteira;
	}

	public List<Endereco> getEnderecos() {
		return enderecos;
	}


	public void setEnderecos(List<Endereco> enderecos) {
		this.enderecos = enderecos;
	}


	public List<Telefone> getTelefones() {
		return telefones;
	}


	public void setTelefones(List<Telefone> telefones) {
		this.telefones = telefones;
	}


	public List<Email> getEmails() {
		return emails;
	}


	public void setEmails(List<Email> emails) {
		this.emails = emails;
	}

	public List<Venda> getVendas() {
		return vendas;
	}
	public void setVendas(List<Venda> vendas) {
		this.vendas = vendas;
	}

	@Override
	public String toString() {
		return "Funcionario [cpf=" + cpf + ", rg=" + rg + ", nome=" + nome
				+ ", numeroCarteira=" + numeroCarteira + ", endereco="
				+ enderecos + ", telefone=" + telefones + ", email=" + emails
				+ ", venda=" + vendas + "]";
	}
	
	public boolean isFill(int edit) {
		if (super.getLogin().isEmpty()) return false;
		if (edit == 0) {
			if (super.getSenha().isEmpty()) return false;
		}
		if (nome.isEmpty()) return false;
		if (cpf.isEmpty()) return false;
		for (Endereco endereco_each : enderecos) {
			if (endereco_each.getRua().isEmpty()) return false;
			if (endereco_each.getNumero().isEmpty()) return false;
			if (endereco_each.getBairro().isEmpty()) return false;
			if (endereco_each.getCidade().isEmpty()) return false;
			if (endereco_each.getEstado().isEmpty()) return false;
			if (endereco_each.getPais().isEmpty()) return false;
		}
		for (Telefone telefone_each : telefones) {
			if (telefone_each.getTelefone().isEmpty()) return false;
		}
		for (Email email_each : emails) {
			if (email_each.getEmail().isEmpty()) return false;
		}
		return true;
		
	}


}